package com.qf.ex;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * 异常处理器: 监听前端控制器，捕获前端控制器抛出的所有异常
 * @author 千锋教育
 * @Company http://www.mobiletrain.org/
 * @Version 1.0
 */
@Component
public class MyHandlerException implements HandlerExceptionResolver {
    /**
     * 处理异常的方法
     * @param request  请求对象
     * @param response 响应对象
     * @param handler  处理器（后端控制器：controller）
     * @param ex  异常对象
     * @return 方法的返回值： ModelAndView（模型和视图对象）
     */
    @Override
    public ModelAndView resolveException(
            HttpServletRequest request,
            HttpServletResponse response,
            Object handler,
            Exception ex) {
        //打印异常的堆栈信息
        ex.printStackTrace();
        ModelAndView mav = new ModelAndView();
        mav.addObject("msg", "系统异常，请联系管理员!!");
        //指定视图页面
        mav.setViewName("/error.jsp");
        return mav;
    }
}
